package rbr.polideportivo;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ServicioReserva {
		
	protected final Log logger = LogFactory.getLog(getClass());
	
	List<Pista> pistas = new ArrayList<Pista>();
	Map<Pista,ArrayList<Calendar>> reservadas = new HashMap<Pista,ArrayList<Calendar>>();
	
	Calendar horaInicio = Calendar.getInstance();
	Calendar horaFinal = Calendar.getInstance();
	
	public ServicioReserva() {
		horaInicio.set(horaInicio.YEAR, horaInicio.MONTH, horaInicio.DAY_OF_MONTH, 10, 0);
//		System.out.println(horaInicio);
		horaFinal.set(horaFinal.YEAR, horaFinal.MONTH, horaFinal.DAY_OF_MONTH, 22, 0);
//		System.out.println(horaFinal);
	}
	
	public double compruebaDisponibilidad(Pista pista, int hora) {
		
		logger.debug("Hora de inicio: " + horaInicio.get(Calendar.HOUR_OF_DAY));
		
		logger.debug("Hora final: " + horaFinal.get(Calendar.HOUR_OF_DAY));
		
		if ( hora < horaInicio.get(Calendar.HOUR_OF_DAY)){
			return 0;
		} else if (hora > horaFinal.get(Calendar.HOUR_OF_DAY)-1){
			return 0;
		} else {
			List<Calendar> pistaHorasNoDisponible = new ArrayList<Calendar>();
			pistaHorasNoDisponible = reservadas.get(pista);
			
			for (int i = 0; i < pistaHorasNoDisponible.size(); i++){
				if (pistaHorasNoDisponible.get(i).get(Calendar.HOUR) == hora){
					return 0;
				}
			}
		}
		
		if (hora > 19){
			return pista.getPrecioConLuz();
		} else return pista.getPrecioSinLuz();
		
//		return 0;
		
	}
	
	
}
